#ifndef SPECIALTERM_FLOATINTERVAL_CLASS
#define SPECIALTERM_FLOATINTERVAL_CLASS


class ST_floatInterval : public SpecialTerm {
public:
	ST_floatInterval(Sort *sort,FeatureTerm *min,FeatureTerm *max);
	virtual ~ST_floatInterval(void);

	static void createSort(Ontology *o);	/* Creates the proper sort in the ontology, so that this specialterm class */ 
											/* can be used as any other feature term.								   */ 
	virtual SpecialTerm *newSpecialTerm(Sort *sort,List<Symbol> *names,List<FeatureTerm> *arguments);	/* Virtual function that calls the appropriate */ 
																										/* constructor to create SpecialTerms		   */ 

	virtual SpecialTerm *clone(void);				/* Makes an independent copy of the Term */ 
	virtual SpecialTerm *clone(class FTKBase *dm);	/* Makes an independent copy of the Term, but does  */ 
													/* not duplicate those elements of the domain model			*/ 

	virtual List<FeatureTerm> *DSpecialization(List<FeatureTerm> *objects,Ontology *ontology,FTKBase *domain_model);
	virtual List<FeatureTerm> *DSpecialization_b(List<FeatureTerm> *objects,Ontology *ontology,FTKBase *domain_model);
	virtual List<FeatureTerm> *DGeneralization(Ontology *ontology,FTKBase *domain_model);
	virtual List<FeatureTerm> *unification(FeatureTerm *f2,Ontology *ontology,FTKBase *domain_model);

	virtual bool subsumes(FeatureTerm *f);

	virtual SpecialTerm *random(void);

protected:
	FeatureTerm *m_min,*m_max;


private:

};

#endif
